From: Christoph Egger Date: Thu, 6 Jan 2011 14:25:10 +0000 (+0000) Subject: libxl: Implement libxl_basename() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10991 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d8318dc19b559da05efc2cccabe4290dc3e5d446;p=xen.git libxl: Implement libxl_basename() This patch implements libxl_basename() as a portable replacement for GNU vs. POSIX basename. Signed-off-by: Christoph Egger Acked-by: Ian Jackson Signed-off-by: Ian Jackson --- diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c index 413768d758..64c884fd77 100644 --- a/tools/libxl/libxl_utils.c +++ b/tools/libxl/libxl_utils.c @@ -43,6 +43,20 @@ static struct schedid_name schedid_name[] = { { NULL, -1 } }; +const char *libxl_basename(const char *name) +{ + const char *filename; + if (name == NULL) + return strdup("."); + if (name[0] == '\0') + return strdup("."); + + filename = strrchr(name, '/'); + if (filename) + return strdup(filename+1); + return strdup(name); +} + unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int smp_cpus) { /* 256 pages (1MB) per vcpu, diff --git a/tools/libxl/libxl_utils.h b/tools/libxl/libxl_utils.h index a8f7f105c1..075197e4cb 100644 --- a/tools/libxl/libxl_utils.h +++ b/tools/libxl/libxl_utils.h @@ -18,6 +18,7 @@ #include "libxl.h" +const char *libxl_basename(const char *name); /* returns string from strdup */ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int smp_cpus); int libxl_name_to_domid(libxl_ctx *ctx, const char *name, uint32_t *domid); char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid); diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 1eace780d1..9d55259bdf 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -5489,7 +5489,7 @@ int main_cpupoolcreate(int argc, char **argv) int config_len = 0; XLU_Config *config; const char *buf; - char *name; + const char *name; const char *sched; uint32_t poolid; int schedid = -1; @@ -5581,7 +5581,7 @@ int main_cpupoolcreate(int argc, char **argv) if (!xlu_cfg_get_string (config, "name", &buf)) name = strdup(buf); else - name = basename(filename); + name = libxl_basename(filename); if (!libxl_name_to_cpupoolid(&ctx, name, &poolid)) { fprintf(stderr, "Pool name \"%s\" already exists\n", name); return -ERROR_FAIL;